package service.review;

import java.util.List;

import util.returnvo.ReviewListReturnVO;
import util.returnvo.ReviewReturnVO;
import vo.ReviewVO;

public interface ReviewService {
	
	/**
	 * 진실/거짓 투표 수가 포함된 리뷰리스트.
	 * page는 int로 변환해 사용. null일 경우 1page로.
	 * rowPerPage는 PageConfig에서 가져다 사용.
	 * @param majorunit_no
	 * @param login
	 * @param page
	 * @return
	 */
	public List<ReviewReturnVO> getReviews(int majorunit_no, int page) throws Exception;

	/**
	 * 리뷰 목록 + PageManager.
	 * page는 바꾸지 않고 그대로 호출.
	 * @param majorunit_no
	 * @param page
	 * @return 리뷰 목록 + PageManager
	 */
	public ReviewListReturnVO getReviewList(int majorunit_no, String page) throws Exception;
	
	/**
	 * 해당 학과의 리뷰를 작성한 적이 있는가
	 * @param param int member_no, int majorunit_no
	 * @return 했었으면 1, 안했으면 0
	 */
	public int didWriteReview(ReviewVO param) throws Exception;
	
	/**
	 * 리뷰 등록
	 * @param param
	 */
	public void registerReview(ReviewVO param) throws Exception;

	/**
	 * 리뷰 삭제
	 * @param review_no
	 */
	public void deleteReview(int review_no) throws Exception;
	
	/**
	 * 리뷰 수정. 이라고 하지만 삭제한 후 새로 등록
	 * @param param
	 */
	public void updateReview(ReviewVO param) throws Exception;
	
	/**
	 * 진실/거짓 투표 수가 포함된 내 리뷰리스트.
	 * page는 int로 변환해 사용. null일 경우 1page로.
	 * rowPerPage는 PageConfig에서 가져다 사용.
	 * @param majorunit_no
	 * @param login
	 * @param page
	 * @return
	 */
	public List<ReviewReturnVO> getMyReviews(int member_no, int page) throws Exception;

	/**
	 * 내 리뷰 목록 + PageManager.
	 * page는 바꾸지 않고 그대로 호출.
	 * @param majorunit_no
	 * @param page
	 * @return 리뷰 목록 + PageManager
	 */
	public ReviewListReturnVO getMyReviewList(int member_no, String page) throws Exception;
}
